package com.pili.pldroid.playerdemo.widget;
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.util.Pair;
import android.view.View;
import android.widget.RelativeLayout;
import com.pili.pldroid.player.common.Util;
/**
* Created by jerikc on 15/11/22.
*/
public class AspectLayout extends RelativeLayout {
private static final String TAG = "AspectLayout";
private int mWidthMeasureSpec;
private int mRootHeight = 0;
private int mRootWidth = 0;
public AspectLayout(Context context) {
super(context);
initialize(context);
}
public AspectLayout(Context context, AttributeSet attrs) {
super(context, attrs);
initialize(context);
}
public AspectLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initialize(context);
}
private void initialize(Context ctx) {
}
@TargetApi(21)
public AspectLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
Log.d(TAG, "onMeasure" + " width=[" + MeasureSpec.toString(widthMeasureSpec) +
"] height=[" + View.MeasureSpec.toString(heightMeasureSpec) + "]");
Rect r = new Rect();
getWindowVisibleDisplayFrame(r);
Pair<Integer, Integer> screenSize = Util.getResolution(getContext());
if (mRootWidth == 0 && mRootHeight == 0) {
mRootWidth = getRootView().getWidth();
mRootHeight = getRootView().getHeight();
}
int totalHeight = 0;
if (screenSize.first > screenSize.second) {
// land
totalHeight = mRootWidth > mRootHeight ? mRootHeight : mRootWidth;
} else {
// port
totalHeight = mRootWidth < mRootHeight ? mRootHeight : mRootWidth;
}
int nowHeight = r.bottom - r.top;
if (totalHeight - nowHeight > totalHeight / 4) {
// soft keyboard show
super.onMeasure(mWidthMeasureSpec, MeasureSpec.makeMeasureSpec(nowHeight + totalHeight - nowHeight, MeasureSpec.EXACTLY));
return;
} else {
// soft keyboard hide
}
mWidthMeasureSpec = widthMeasureSpec;
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}